package tur.br.moradadosol.view.form;

import java.util.Collection;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

import tur.br.moradadosol.model.Hospede;
import tur.br.moradadosol.util.Util;

public class HospedeForm extends ActionForm {

	private String gravar;
	private String cancelar;
	private String deletar;
	private String procurar;
	private String pesquisar;
	private String nomepesquisa;
	private String voltar;
	private String cadastrar;
	private Hospede hospede;
	private Collection hospedes;
	
	public HospedeForm() {
		hospede = new Hospede();
	}
	
	public String getBairro() {
		return hospede.getBairro();
	}
	
	public String getCadastrar() {
		return cadastrar;
	}
	
	public String getCancelar() {
		return cancelar;
	}
	
	public String getCarro() {
		return hospede.getCarro();
	}

	public String getCelular() {
		return hospede.getCelular();
	}

	public int getCep() {
		return hospede.getCep();
	}

	public String getCidade() {
		return hospede.getCidade();
	}

	public int getCodigo() {
		return hospede.getCodigo();
	}

	public String getCpf() {
		return hospede.getCpf();
	}

	public String getDeletar() {
		return deletar;
	}

	public String getEmail() {
		return this.hospede.getEmail();
	}
	
	public String getEndereco() {
		return hospede.getEndereco();
	}

	public String getEnderecoComercial() {
		return hospede.getEnderecoComercial();
	}

	public int getEstado() {
		return this.hospede.getEstado();
	}

	public String getFoneComercial() {
		return hospede.getFoneComercial();
	}

	public String getGravar() {
		return gravar;
	}

	public Hospede getHospede() {
		return hospede;
	}

	public Collection getHospedes() {
		return hospedes;
	}

	public String getNascimento() {
		return Util.getDate(hospede.getNascimento());
	}

	public String getNome() {
		return hospede.getNome();
	}

	public String getNomepesquisa() {
		return nomepesquisa;
	}

	public String getPais() {
		return hospede.getPais();
	}

	public String getPesquisar() {
		return pesquisar;
	}

	public String getProcurar() {
		return procurar;
	}

	public String getProfissao() {
		return hospede.getProfissao();
	}

	public String getRg() {
		return this.hospede.getRg();
	}
	
	public String getTelefone() {
		return hospede.getTelefone();
	}

	public String getVoltar() {
		return voltar;
	}

	public void reset(ActionMapping mapping, HttpServletRequest request) {
		setGravar("");
		setCancelar("");
		setDeletar("");
		setProcurar("");
		setVoltar("");
		setPesquisar("");
		setCadastrar("");
	}

	public void resetForm() {
		hospede = new Hospede();
	}

	public void setBairro(String bairro) {
		hospede.setBairro(bairro);
	}

	public void setCadastrar(String string) {
		cadastrar = string;
	}

	public void setCancelar(String cancelar) {
		this.cancelar = cancelar;
	}

	public void setCarro(String carro) {
		hospede.setCarro(carro);
	}

	public void setCelular(String celular) {
		hospede.setCelular(celular);
	}

	public void setCep(int cep) {
		hospede.setCep(cep);
	}

	public void setCidade(String cidade) {
		hospede.setCidade(cidade);
	}

	public void setCodigo(int codigo) {
		hospede.setCodigo(codigo);
	}

	public void setCpf(String cpf) {
		hospede.setCpf(cpf);
	}

	public void setDeletar(String deletar) {
		this.deletar = deletar;
	}

	public void setEmail(String email) {
		this.hospede.setEmail(email);
	}
	
	public void setEndereco(String endereco) {
		hospede.setEndereco(endereco);
	}

	public void setEnderecoComercial(String enderecoComercial) {
		hospede.setEnderecoComercial(enderecoComercial);
	}

	public void setEstado(int estado) {
		this.hospede.setEstado(estado);
	}

	public void setFoneComercial(String foneComercial) {
		hospede.setFoneComercial(foneComercial);
	}
	
	public void setGravar(String gravar) {
		this.gravar = gravar;
	}
	
	public void setHospede(Hospede hospede) {
		this.hospede = hospede;
	}
	
	public void setHospedes(Collection hospedes) {
		this.hospedes = hospedes;
	}
	
	public void setNascimento(String nascimento) {
		hospede.setNascimento(Util.getDate(nascimento));
	}
	
	public void setNome(String nome) {
		hospede.setNome(nome);
	}
	
	public void setNomepesquisa(String string) {
		nomepesquisa = string;
	}
	
	public void setPais(String pais) {
		hospede.setPais(pais);
	}

	public void setPesquisar(String string) {
		pesquisar = string;
	}

	public void setProcurar(String procurar) {
		this.procurar = procurar;
	}

	public void setProfissao(String profissao) {
		hospede.setProfissao(profissao);
	}

	public void setRg(String rg) {
		this.hospede.setRg(rg);
	}

	public void setTelefone(String telefone) {
		hospede.setTelefone(telefone);
	}
	
	public void setVoltar(String string) {
		voltar = string;
	}

	public ActionErrors validate(
		ActionMapping mapping,
		HttpServletRequest request) {

		ActionErrors errors = new ActionErrors();

		//if(getGravar() != "") { //isso é bug!
		if(!getGravar().equals("")) {
			if(getNome() != null && getNome().trim().length() == 0) {
				errors.add("error.hospede.nome", 
					new ActionMessage("error.hospede.nome.required"));
			}
			
			if(getTelefone() != null && getTelefone().trim().length() == 0) {
				errors.add("error.hospede.telefone",
					new ActionMessage("error.hospede.telefone.required"));
			}
			else if(!Util.isTelefoneValido(getTelefone())) {
			
				errors.add("error.hospede.telefone",
					new ActionMessage("error.hospede.telefone.invalid"));
			}
			
			if(getCelular() != null && getCelular().trim().length() != 0 &&
					!Util.isTelefoneValido(getCelular())) {
				errors.add("error.hospede.telefone",
						new ActionMessage("error.hospede.celular.invalid"));
			}
			
			if(getFoneComercial() != null && 
					getFoneComercial().trim().length() != 0 &&
					!Util.isTelefoneValido(getFoneComercial())) {
				errors.add("error.hospede.telefone",
						new ActionMessage("error.hospede.fone.comercial.invalid"));
			}
		} 
		//else if(getPesquisar() != "") { //bug!
		else if(!getPesquisar().equals("")) { 
			if(getNomepesquisa() != null && getNomepesquisa().trim().length() == 0) {
				errors.add("error.hospede.nomepesquisa",
					new ActionMessage("error.hospede.nomepesquisa.required"));				
			}
		}
		
		return errors;
	}

}
